# 导入模块
from tkinter import *
import ctypes
from ctypes import wintypes
import random
import time

# 0.数据收集
# 1>语句
li1 = ["天天开心","游刃有余","家庭和睦","气质不凡","风度翩翩","神采奕奕"]
# 2>颜色
li2 = ["red","green","blue","yellow","gray","pink","purple","cyan","black"]

# 2.功能实现
# 1>随机背景颜色
def bgr():
    return random.choice(li2)
# 2>随机语句
def word():
    return random.choice(li1)
# 3>随机位置
def place_x():
    x = random.randint(0, 2000)
    return x
def place_y():
    y = random.randint(0, 1000)
    return y
# 4>让窗口更加圆润
# 让窗口更加圆润
"""
    为tkinter窗口设置圆角
    :param window: 窗口对象（如root）
    :param radius: 圆角半径（数值越大，圆角越明显）
"""
def set_window_rounded_corner(window):
    # 获取窗口句柄（hwnd）
    radius=20
    hwnd = wintypes.HWND(window.winfo_id())

    # 获取窗口当前宽高
    width = window.winfo_width()
    height = window.winfo_height()

    # 创建圆角矩形区域（左上角(0,0)，右下角(width, height)，圆角半径radius）
    rgn = ctypes.windll.gdi32.CreateRoundRectRgn(
        0, 0, width, height,
        radius, radius  # 圆角的宽度和高度（相等时为标准圆角）
    )
    # 将圆角区域应用到窗口
    ctypes.windll.user32.SetWindowRgn(hwnd, rgn, True)

# 渐入
def fade_in(window):
    alpha = 0.0
    while alpha < 1.0:
        alpha += 0.1
        window.attributes("-alpha", alpha)
        window.update()  # 实时刷新透明度
        time.sleep(0.01)
# 窗口加载/尺寸变化时，重新设置圆角（确保窗口大小改变后圆角依然生效）
# 6>渐变消失
# def fade_out(window, step=0.05, delay=50):
#     """
#     窗口缓慢消失效果
#     :param window: 窗口对象（如root）
#     :param step: 每次透明度降低的步长（值越小，消失越慢）
#     :param delay: 每次更新的延迟时间（毫秒，值越大，消失越慢）
#     """
#     # 获取当前透明度（初始为1.0，完全不透明）
#     current_alpha = window.attributes("-alpha")
#
#     if current_alpha > 0:
#         # 降低透明度（最小为0）
#         new_alpha = max(current_alpha - step, 0)
#         window.attributes("-alpha", new_alpha)
#         # 延迟后继续调用，形成渐变
#         window.after(delay, fade_out, window, step, delay)
#     else:
#         # 完全透明后关闭窗口
#         window.destroy()

root = Tk()
root.withdraw()

def creat_windows():
    i = 0
    while i < 100 :
        # 1.主要内容
        # 1>创建窗口
        top = Toplevel(root)
        # 无边框
        # top.overrideredirect(True)
        # 窗口初始化
        frame1 = Frame(top)
        frame1.pack(expand=True)
        # 窗口颜色
        color = str(bgr())
        top.config(bd=0,bg=color)
        # 边框大小与位置
        x = place_x()
        y = place_y()
        top.geometry(f"200x100+{x}+{y}")
        # 2>标签组件
        label = Label(frame1, text=f"{word()}", justify=CENTER,font=("微软雅黑",20),bg=color,fg="white")
        label.pack(side=LEFT)
        # 语句
        def on_window_configure(event):
            set_window_rounded_corner(top)
        # 绑定窗口尺寸变化事件（首次加载和拉伸窗口时触发）
        top.bind("<Configure>", on_window_configure)

        # 启用渐入
        fade_in(top)

        # 启动缓慢消失效果（3秒左右完全消失：step=0.05，delay=50 → 1.0/0.05=20步 → 20*50=1000毫秒=1秒，可调整
        # root.after(1000, fade_out(root, step=0.02, delay=20))



        i += 1
        time.sleep(0.01)

if __name__ == '__main__':
    creat_windows()
    root.mainloop()





